/**
 * 二维码信息解析工具
 * 使用固定的格式和位置来解析二维码数据
 * 按照标准顺序解析：
 * 1. CPNPrefix (XXXX-XXXXXX-AH)
 * 2. QTY (80)
 * 3. UNIT (PCS)
 * 4. VENDOR (4572)
 * 5. D/C (1919)
 * 6. Trading code (空)
 * 7. PO (20200518193)
 * 8. Inv. No. (空)
 * 9. Barcode (4572206009B0001)
 * 10. LOT (L0905A01A20051910004)
 * 11. Manufacture (BOTHHAND)
 * 12. MPN (G4P109NY-5 LF)
 * 13. VER (0)
 */

/**
 * 解析二维码信息
 * @param {string} qrCodeText - 扫描得到的二维码文本
 * @returns {object} - 解析结果
 */
export function parseQRCode(qrCodeText) {
  try {
    if (!qrCodeText || typeof qrCodeText !== 'string') {
      return { success: false, message: '无效的二维码信息' };
    }

    //console.log('原始二维码文本:', qrCodeText);

    const fields = [];
    
    // 首先处理第一个字段（CPN）- 在第一个 { 之前的内容
    const firstBraceIndex = qrCodeText.indexOf('{');
    if (firstBraceIndex > 0) {
      fields.push(qrCodeText.substring(0, firstBraceIndex).trim());
      // 从第一个 { 开始处理剩余部分
      const remainingText = qrCodeText.substring(firstBraceIndex);
      
      // 使用正则表达式分割，保留空字段
      // 匹配 { 后面到下一个 { 之前的内容（或到字符串结尾）
      const regex = /\{([^{]*)/g;
      let match;
      
      while ((match = regex.exec(remainingText)) !== null) {
        const fieldValue = match[1].trim();
        // 空字段保存为 null，非空字段保存为字符串
        fields.push(fieldValue === '' ? null : fieldValue);
      }
    } else {
      // 如果没有找到 {，说明格式不正确
      return { success: false, message: '二维码格式不正确,请检查' };
    }

    // 根据标准字段索引映射
    const result = {
      cpn: fields[0] || null,         // 位置1: CPN前缀 (XXXX-XXXXXX-AH)
      qty: fields[1] || null,         // 位置2: 数量 (80)
      unit: fields[2] || null,        // 位置3: 单位 (PCS)
      vendor: fields[3] || null,      // 位置4: 供应商 (4572)
      dc: fields[4] || null,          // 位置5: D/C (1919)
      tradingCode: fields[5] || null, // 位置6: Trading code (空)
      po: fields[6] || null,          // 位置7: PO号 (20200518193)
      invNo: fields[7] || null,       // 位置8: Inv. No. (空)
      barcode: fields[8] || null,     // 位置9: 条码 (4572206009B0001)
      lotNo: fields[9] || null,       // 位置10: 批次号 (L0905A01A20051910004)
      manufacture: fields[10] || null, // 位置11: 制造商 (BOTHHAND)
      mpn: fields[11] || null,        // 位置12: MPN (G4P109NY-5 LF)
      ver: fields[12] || null,        // 位置13: 版本 (0)
      allFields: fields,              // 所有字段
      rawText: qrCodeText             // 原始文本
    };

    console.log('解析结果:', result);

    return {
      success: true,
      data: result
    };
  } catch (error) {
    return {
      success: false,
      message: '解析二维码信息出错',
      error: error.message
    };
  }
}

/**
 * 组合解析二维码信息
 * 直接使用固定格式进行二维码解析
 * @param {string} qrCodeText - 扫描得到的二维码文本
 * @returns {object} - 解析结果
 */
export function parseQRCodeCombined(qrCodeText) {

  return parseQRCode(qrCodeText);
}
